package com.caocaog.market.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.caocaog.market.entity.*;
import com.caocaog.market.toccpt.vo.CcptOrderInfo;
import com.caocaog.market.vo.DistanceVo;
import com.caocaog.market.vo.OrderForOneVo;
import com.caocaog.market.vo.ShopInfoVo;
import com.caocaog.market.vo.ShopVo;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 商品订单信息表
 *
 * @author yuki Guo
 * @date 2022年2月10日15:03:08
 */
public interface IOrderBaseSDXService extends IService<OrderBase> {

    OrderBase selectOrderInfo(String orderId);
    OrderBase selectOrderInfoByOrderNo(String orderNo);

    IPage<OrderBase> selectOrderListForMember(OrderBase orderBase, Integer pageNo, Integer pageSize);
    IPage<OrderBase> selectOrderListForMerchant(OrderBase orderBase, Integer pageNo, Integer pageSize);

    //单商品订单
    Result add(OrderForOneVo vo, Member member);
    //获取配送费
    DistanceVo getDeliveryAmount(DistanceVo vo);

    //送大侠 首页-周边好物
    Result goodThingsAroundForSDX(String lat, String lng, Integer pageNo, Integer pageSize);


    //支付回调订单状态 结算记录
//    void localHandler(String payNo);

    //取消订单
    Result cancelOrder(String orderId, Member member);
    //核销订单
    Result verifyOrder(OrderBase orderBase);

    //订单申请退款
    Result refundOrder(OrderRefund orderRefund, Member member);

    Result getShopInfo(ShopInfoVo shopInfoVo);
    Page getShopOfGoodsList(GoodsBasic goodsBasic, Integer pageNo, Integer pageSize);

    /**
     * 计算符合的优惠信息
     *
     * @author chechen
     * @date 2021-12-19
     */
    List<ShopPromoHis> computeConformPromo(OrderForOneVo orderForOneVo);

    List<OrderStatusInfo> getOrderStatusInfo(String orderId);
    void addOrderStatusInfo(String orderId, String orderNo, String createBy, String remark, String statusName, Date date);
    CcptOrderInfo getCcptOrderInfo(OrderBase orderBase);



}
